package com.xiaoshuidi.cloud.module.member.service.questionnaireinfo;

import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.member.controller.admin.questionnaireinfo.vo.PreviewQuestionnaireInfo;
import com.xiaoshuidi.cloud.module.member.controller.admin.questionnaireinfo.vo.QuestionVO;
import com.xiaoshuidi.cloud.module.member.controller.admin.questionnaireinfo.vo.QuestionnaireDetailVO;
import com.xiaoshuidi.cloud.module.member.controller.admin.questionnaireinfo.vo.QuestionnaireExcelCountVO;
import com.xiaoshuidi.cloud.module.member.controller.admin.questionnaireinfo.vo.QuestionnaireInfoCreateVO;
import com.xiaoshuidi.cloud.module.member.controller.admin.questionnaireinfo.vo.QuestionnairePageRespVO;
import com.xiaoshuidi.cloud.module.member.controller.admin.questionnaireinfo.vo.QuestionnairePageVO;
import com.xiaoshuidi.cloud.module.member.controller.app.questionnaireinfo.vo.ParticipateVO;
import com.xiaoshuidi.cloud.module.member.controller.app.questionnaireinfo.vo.UserQuestionnaireVO;

import java.io.IOException;
import java.util.List;

public interface MemberQuestionnaireInfoService {
    /**
     * 创建问卷
     *
     * @param createReqVO
     * @return
     */
    Long create(QuestionnaireInfoCreateVO createReqVO);

    /**
     * 分页查询问卷信息
     *
     * @param pageVO
     * @return
     */
    PageResult<QuestionnairePageRespVO> getPage(QuestionnairePageVO pageVO);

    /**
     * 查看问卷详情
     *
     * @param id
     * @return
     */
    QuestionnaireDetailVO getQuestionnaireById(Long id);

    /**
     * 预览问卷
     *
     * @param id
     * @return
     */
    PreviewQuestionnaireInfo previewQuestionnaire(Long id);

    /**
     * 租客参与问卷调查
     *
     * @param vo
     * @return
     */
    Boolean answer(UserQuestionnaireVO vo);

    /**
     * 获得此问卷所有题目
     *
     * @param questionnaireId
     * @return
     */
    List<QuestionVO> getQuestionList(Long questionnaireId);

    /**
     * 获得此问卷所有租户填写的数据
     *
     * @param questionnaireId
     * @return
     */
    List<List<String>> getQuestionnaireData(Long questionnaireId) throws IOException, ClassNotFoundException;

    /**
     * 用户是否已参加过问卷
     *
     * @param participateVO
     * @return
     */
    Boolean participateOrNot(ParticipateVO participateVO);

    /**
     * 发布问卷
     *
     * @param id
     * @return
     */
    Boolean publish(Long id);

    /**
     * 修改问卷
     *
     * @param createReqVO
     * @return
     */
    Boolean update(QuestionnaireInfoCreateVO createReqVO);

    Boolean otherParticipateOrNot(String key);

    PreviewQuestionnaireInfo otherPreviewQuestionnaire(String key);
}
